var result: FileData = (<any>cursor).value;
if (result && result.properties) { recipient.file(result.path, result.properties);
filesByName: { [name: string]: { [name: string]: string; }; }, callback: (error: Error, updater: attached.UpdateStorage) => void){ var transaction = this._db.transaction(['files', 'metadata'], 'readwrite');
transaction.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'migrate: transaction'), null);
var filesStore = transaction.objectStore('files'); var clearFiles = filesStore.clear();
clearFiles.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'migrate: objectStore(files)-clear'), null);
clearFiles.onsuccess = (event) => { var metadataStore = transaction.objectStore('metadata'); var clearMetadata = metadataStore.clear();
clearMetadata.onerror = (errorEvent) => callback(wrapErrorEvent(errorEvent, 'migrate: objectStore(files)/clear-objectStore(metadata)-clear'), null);
clearMetadata.onsuccess = (event) => { var editedUTC = Date.now();
var putEditedUTC = metadataStore.put({ property: 'editedUTC', value: editedUTC }); putEditedUTC.onerror = (errorEvent) => callback(
wrapErrorEvent(errorEvent, 'migrate: objectStore(files)/clear-objectStore(metadata)/clear-put(' + editedUTC+')'), putEditedUTC.onsuccess = (event) => { var filenames: string[] = [];
for (var k in filesByName) if (filesByName.hasOwnProperty(k)) { var update = new UpdateStorage(this._db);
filenames.forEach(file => { var fileData = { path: file, properties: filesByName[file] }; var putFile = filesStore.put(fileData);
putFile.onerror = (errorEvent) => { callback(wrapErrorEvent(errorEvent, ''), null);
putFile.onsuccess = (event) => { if (completedFiles === filenames.length) { var update = new UpdateStorage(this._db);